package com.bjpowerrnode.javase.array;

/**
 * 冒泡排序算法。
 * 原始数据：3,2,7,9,6,1,8
 *第一次循环：
 *  2 3 7 9 6 1 8(3 > 2)3和2换位置，3右移动
 *  2 3 7 9 6 1 8（3 < 7）3的位置不变，那着7和右边的数比比较
 *  2 3 7 9 6 1 8 (7 < 9)7的位置不变那着9和右边的数字比较
 *  2 3 7 6 9 1 8（6 < 9）6和9换位置，那着9接着和右边数比较
 *  2 3 7 6 1 9 8（1 < 9）1和9换位置，那着9接着和右边数比较
 *  2 3 7 6 1 8 9（8 < 9）8和9换位置，最终使得最右边的数最大
 * 第二次循环：
 *  2 3 7 6 1 8 9（2 < 3）
 *  2 3 7 6 1 8 9（3 < 7）
 *  2 3 6 7 1 8 9（6 < 7）
 *  2 3 6 1 7 8 9（1 < 7）
 *  2 3 6 1 7 8 9（7 < 8）
 *  最后一位已经是最大的了，所以第二次循环的次数，比第一次少1即可。
 *
 * 第三次循环：
 *  2 3 6 1 7 8 9（2 < 3）
 *  2 3 6 1 7 8 9（3 < 6）
 *  2 3 1 6 7 8 9（6 > 1）
 *  2 3 1 6 7 8 9（6 < 7）
 *
 *  第四次循环：
 *  2 3 1 6 7 8 9（2 < 3）
 *  2 1 3 6 7 8 9（3 > 1）
 *  2 1 3 6 7 8 9（6 < 7）
 *
 * 第5次循环
 *  1 2 3 6 7 8 9（2 > 1）
 *  1 2 3 6 7 8 9（2 < 3）
 *
 *第6次循环：
 *  1 2 3 6 7 8 9（1 < 2）
 */
public class BubbleSort {
    public static void main(String[] args) {

        //定义int类型的数组
        int[] array = {3,2,7,9,6,1,8};

        System.out.print("原始数组：[");
        for (int i = 0; i < array.length; i++) {
            if(i < array.length - 1) {
                System.out.print(array[i] + "," );
            }else System.out.print(array[i]);
        }
        System.out.println("]");


        //打印换行符
        System.out.println();

        //冒泡排序法
        /*
        for (int i = 0; i < array.length-1; i++) {//array.length=7
            for (int j = 0; j < array.length - i - 1; j++) {
                int temp = 0;
                if(array[j] > array[j+1]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j +1]=temp;
                }
            }
        } */
        for (int i = array.length-1; i > 0 ; i--) {//array.length=7
            for (int j = 0; j < i; j++) {
                int temp = 0;
                if(array[j] > array[j+1]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j +1]=temp;
                }
            }
        }

        System.out.print("排序后的数组：[");
        for(int i = 0; i < array.length; i++) {
            if(i < array.length - 1) {
                System.out.print(array[i] + "," );
            }else System.out.print(array[i]);
        }
        System.out.println("]");

    }

}
